package recursion;

/**
 * @program: play-structure
 * 移除链表元素,删除链表中等于给定值 val 的所有节点，使用递归
 * @author: baichen
 **/
public class RemoveLinkedListElement5 {
    public ListNode removeElements(ListNode head, int val) {
        if (head == null) {
            return null;
        }
        //如果要删除的话，其实就是指向了去掉head节点剩下的链表
        head.next = removeElements(head.next, val);
        return head.val == val ? head.next : head;  //三目运算符

    }

    public static void main(String[] args) {
        int[] nums = {1, 2, 6, 3, 4, 5, 6};    //声明数组
        ListNode head = new ListNode(nums);    //构造函数中传入数组nums
        System.out.println(head);    //打印以 head 作为头结点的整个链表对应的字符串

        ListNode res = (new RemoveLinkedListElement5()).removeElements(head, 6);//将 head 和待删除节点6作为参数传入
        System.out.println(res);
    }
}
